//
//  ViewController.swift
//  PassValueDemo
//
//  Created by MAC on 2020/8/19.
//  Copyright © 2020 MAC. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    
    //设置导航标题全局字符串，初始化并添加标题
    var arr:Array = ["单例传值","通知传值","属性传值","闭包传值","代理传值","NSUserDefaults传值"]
    //设置全局的cell一个字符串
    var cellID = "cellID"
    /*
     声明UIViewController数组 - 第一步
     为了少些一下push和初始化类名，所以我用了全局数组
     */
    var vcS:Array<UIViewController.Type>!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //设置导航标题
        self.title = "页面传值"
        //设置背景颜色
        view.backgroundColor = UIColor.init(named: "bgColor")
        
        /*
         声明UIViewController数组 - 第二步
         初始化数组，并添加类名（必须加”self“，不需要双引号）
         */
        vcS = [HDLViewController.self,HTZViewController.self,HSXViewController.self,HBBViewController.self,HYDLViewController.self,UserDefaultsViewController.self]
        
        
        //声明UITableView变量名，并初始化
        let tableViews = UITableView()
        //设置坐标宽高
        tableViews.frame = view.bounds
        //设置两个代理
        tableViews.dataSource = self
        tableViews.delegate = self
        //注册UITableViewCell
        tableViews.register(UITableViewCell.self, forCellReuseIdentifier:cellID )
        //把UITableView添加到view
        view.addSubview(tableViews)
        
    }
    
    //MARK:- TableViewDelegate
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return arr.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //创建变量名
        let cell = tableView.dequeueReusableCell(withIdentifier: cellID, for: indexPath)
        //把导航标题数组赋值给cell中的label
        cell.textLabel?.text = arr[indexPath.row]
        
        return cell
        
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        /*
         声明UIViewController数组 - 第三步
         创建变量名，并把数组中的类名赋值给变量名
         */
        let vcClass = vcS[indexPath.row]
        /*
         声明UIViewController数组 - 第四步
         创建变量名，并把第三步变量名初始化一下
         */
        let vcInstance = vcClass.init()
        //设置导航标题
        vcInstance.title = arr[indexPath.row]
        /*
         设置页面背景色（现在设置的颜色是随系统黑夜模式改变而改变）
         博客： OS、swift - 使用Assets来设置黑夜模式 https://www.jianshu.com/p/fdb4caca1726
         */
        vcInstance.view.backgroundColor = UIColor.init(named: "bgColor")
        /*
         声明UIViewController数组 - 第五步
         开始push动画，并把第四步的变量名添加到push中
         */
        navigationController?.pushViewController(vcInstance, animated: true)
    }
    
}

